package com.jt.controller;

import com.jt.pojo.ItemCat;
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("/findAll")
    public List<User> findAll(){
        return userService.findAll();
    }

    /**
     *  需求：根据u/p查询数据库，返回秘钥token
     *  URL: /user/login
     *  参数：username/password    json
     *  返回值：SysResult对象(token)
     */
    @PostMapping("/user/login")
    public SysResult login(@RequestBody User user){
        String token= userService.findUserByUP(user);
        //如果token密钥为空，或等于空串，则返回失败方法
        if (token ==null || "".equals(token)){
            return SysResult.fail();
        }
        //否则返回成功方法
        return SysResult.success(token);
    }

    /**
     * 需求：利用分页查询用户信息
     * URL：/user/list
     * 查询：http://localhost:8091/user/list?query=查询关键字&pageNum=1&pageSize
     * 返回值：SysResult(pageResult)
     */
    @GetMapping("/user/list")
    public SysResult getUserListByPage(PageResult pageResult){
        pageResult=userService.findUserListByPage(pageResult);
        return SysResult.success("服务器调用成功",pageResult);
    }

    /**
     * 需求：根据ID修改状态
     * URL： /user/status/{id}/{status}
     * 参数：  id/user
     * @param user
     * @return
     */
    @PutMapping("/user/status/{id}/{status}")
    public SysResult updateUserByStatus(User user){
        int rows=userService.updateUserByStatus(user);
        if (rows ==0) return SysResult.fail();
        return SysResult.success("服务器调用成功","修改行数为："+rows);
    }
    /**
     * 用户新增：
     * URL：/user/addUser
     * 参数： JS对象 转换为JSON串
     *      {"username":"111","password":"222","password2":"222","email":"22@qq.com","phone":"13111111111"}
     * 返回值：SysResult
     *
     * 对象转化为JSON    @ResponseBody
     * JSON转化为对象    @RequestBody
     */
    @PostMapping("/user/addUser")
    public SysResult saveUser(@RequestBody User user){
        int rows=userService.saveUser(user);
        if (rows ==0) return SysResult.fail();
        return SysResult.success("服务器调用成功","修改行数为："+rows);
    }
    @GetMapping("/user/{id}")
    public SysResult getUserById(@PathVariable Integer id){
        User user=userService.getUserById(id);
        return SysResult.success("服务器调用成功",user);
    }
    /**
     * 用户修改操作
     * URL：/user/updateUser
     * 参数：id/phone/email
     * 返回值：SysResult对象
     */
    @PutMapping("/user/updateUser")
    public SysResult updateUser(@RequestBody User user){
        int rows=userService.updateUser(user);
        if (rows ==0) return SysResult.fail();
        return SysResult.success("服务器调用成功",rows);
    }

    /**
     *  用户删除操作
     *  URL：/user/{id}
     *  返回值：SysResult
     */
    @DeleteMapping("/user/{id}")
    public SysResult deleteUserById(User user){
        int rows=userService.deleteUserById(user);
        if (rows ==0) return SysResult.fail();
        return SysResult.success("服务器调用成功","删除行数为："+rows);
    }
}
